package cl.inmobiliaria.negocio;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import cl.inmobiliaria.entidades.Bodega;
import cl.inmobiliaria.entidades.Cotizacion;
import cl.inmobiliaria.entidades.Departamento;
import cl.inmobiliaria.entidades.Estac;
import cl.inmobiliaria.persistencia.entity.Cotcotizacion;
import cl.inmobiliaria.persistencia.entity.Cotvisita;
import cl.inmobiliaria.persistencia.services.impl.CotizacionInmobiliaria;

public class DatosCotizacion {
	private CotizacionInmobiliaria entBd = new  CotizacionInmobiliaria();
    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("CotizacionInmobiliaria");
    private EntityManager em = emf.createEntityManager();
    
    public Cotizacion traerCotizacionPorId(int id)
    {
    	entBd.setEntityManager(em);
    	Cotizacion cotizacion = new Cotizacion();
    	
    	Cotcotizacion cotizacionBD = entBd.getCotizacionById(id);
    	
    	cotizacion.setIdBodega(cotizacionBD.getIdBodega());
    	cotizacion.setIdCotizacion(cotizacionBD.getId());
    	cotizacion.setIdEstacionamiento(cotizacionBD.getIdEstacionamiento());
    	cotizacion.setIdInmueble(cotizacionBD.getIdInmueble());
    	
    	return cotizacion;
    }
    
    public int insertarCotizacion(Cotizacion cotizacion)
    {
    	entBd.setEntityManager(em);
    	
    	Cotcotizacion cotizacionBD = new Cotcotizacion();
    	cotizacionBD.setEstado((byte) 1);
    	cotizacionBD.setId(traerIdCotizacion());
    	cotizacionBD.setIdBodega(cotizacion.getIdBodega());
    	cotizacionBD.setIdEstacionamiento(cotizacion.getIdEstacionamiento());
    	cotizacionBD.setIdEtapa(cotizacion.getIdEtapa());
    	cotizacionBD.setIdInmueble(cotizacion.getIdInmueble());
    	cotizacionBD.setIdTipoProducto(String.valueOf(cotizacion.getIdTipoProducto()));
    	cotizacionBD.setIdVisita(cotizacion.getIdVisita());
    	cotizacionBD.setPrecioBodega(cotizacion.getPrecioBodega());
    	cotizacionBD.setPrecioEstacionamiento(cotizacion.getPrecioEstacionamiento());
    	cotizacionBD.setPrecioInmueble(cotizacion.getPrecioInmueble());
    	cotizacionBD.setTotalUf(cotizacion.getTotal());
    	
    	entBd.insertarCotizacion(cotizacionBD);
    	
    	return cotizacionBD.getId();
    }
    
    public int traerIdCotizacion()
    {
    	entBd.setEntityManager(em);
    	
    	Collection<Cotcotizacion> cotizacionBD = entBd.traerUltimaCotizacion();
		List<Cotcotizacion> cotizaciones = new ArrayList<Cotcotizacion>(cotizacionBD);
		 
		return cotizaciones.get(0).getId()+1;
    }
    
    public Bodega traeBodegaSeleccionada(List<Bodega> bodegas, short idBodega)
	{
		for (int i = 0; i<bodegas.size(); i++){
			if (bodegas.get(i).getIdBodega() == idBodega)
			{
				return 	bodegas.get(i);
			}
		}
		
		return null;
	}
	
    public Departamento traeDepartamentoSeleccionado(List<Departamento> departamentos, short idDepto)
	{
		for (int i = 0; i<departamentos.size(); i++){
			if (departamentos.get(i).getIdDpto() == idDepto)
			{
				return 	departamentos.get(i);
			}
		}
		
		return null;
	}
	
    public Estac traeEstacionamientoSeleccionado(List<Estac> estacionamientos, short idEstac)
	{
		for (int i = 0; i<estacionamientos.size(); i++){
			if (estacionamientos.get(i).getIdEstacionamiento() == idEstac)
			{
				return 	estacionamientos.get(i);
			}
		}
		
		return null;
	}
}
